#ifndef _SEM_HPP_
#define _SEM_HPP_
#include <iostream>
#include <semaphore.h>
// 封装信号量
class Sem
{
public:
    Sem(int value)
    {
        sem_init(&sem_, 0, value);
    }
    // 封装p操作
    void P()
    {
        sem_wait(&sem_); // 计数器递减
    }
    // 封装V操作
    void V()
    {
        sem_post(&sem_); // 计数器递增
    }
    ~Sem()
    {
        sem_destroy(&sem_);
    }

private:
    sem_t sem_;
};

#endif